#pragma once

#include <vector>
#include <tuple>
#include <string>
#include <array>

struct DataMeta{
    enum {
        DATA_IMAGE=0,
        DATA_SENSOR,
    };
    DataMeta(int type_, std::tuple<uint64_t, std::string, std::string> &image_):
            type(type_), image(image_){}
    DataMeta(int type_, std::tuple<uint64_t, int, std::array<double,12>> &sensor_data_):
            type(type_), sensor_data(sensor_data_){}
    int type; // 0 -- image, 1 -- imu
    // <ts, img_head_name, img_hand_name>
    std::tuple<uint64_t, std::string, std::string> image;
    // <ts, left_or_right_or_headpose, data>
    std::tuple<uint64_t, int, std::array<double,12>> sensor_data;
};

void get_sensor_data(const char *root_dir, std::vector<std::tuple<uint64_t, int, std::array<double, 12>>> &imu_data);
void get_dataset(const char *root_dir, std::vector<DataMeta> &dataset);
